Data transfer rates from storage such as a magnetic or solid-state storage device is relatively slow. In-memory processing relies upon the transfer of data relevant to a decision-making process from such storage devices to system memory having a comparatively much higher data transfer rate. In-memory processing is particularly useful in applications where relatively large quantities of intermediate decision-making data are generated, as such intermediate decision-making data is frequently written to storage then retrieved for subsequent processing. Neural networks (such as recursive neural networks, deep neural networks, convolutional neural networks, etc.) may generate a large volume of intermediate data that is passed from layer to layer within the network. In such applications, the relatively slow transfers from storage devices to system memory may become increasingly apparent.
With an increasing dependence on graphics intensive processing using smaller form factor portable and mobile-platform processor-based devices, the ability to perform fixed or floating point mathematical operations using in-memory computational processing may improve speed, efficiency and accuracy of many neural network implementations. However, users may resist adapting programming code (typically written in one or more high-level programming languages) to take advantage of such in-memory processing. A need exists, therefore, to transparently leverage the many advantages of in-memory computational processing without necessitating hardware-specific libraries at the high-language level which users typically utilize when creating models for neural networks.
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, various alternatives, modifications and variations thereof will be apparent to those skilled in the art. At least some of the figures noted above detail exemplary architectures and systems to implement embodiments of various techniques described herein. In some embodiments, one or more hardware components and/or instructions described above are emulated as detailed below, or implemented as software modules.